{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1912年，泰坦尼克号在第一次航行中就与冰山相撞沉没，导致了大部分乘客和船员身亡。在这个入门项目中，我们将探索部分泰坦尼克号旅客名单，来确定哪些特征可以最好地预测一个人是否会生还。为了完成这个项目，你将需要实现几个基于条件的预测并回答下面的问题。我们将根据代码的完成度和对问题的解答来对你提交的项目的进行评估。 \n",
    "\n",
    "> **提示**：这样的文字将会指导你如何使用 iPython Notebook 来完成项目。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "点击[这里](https://github.com/udacity/machine-learning/blob/master/projects/titanic_survival_exploration/titanic_survival_exploration.ipynb)查看本文件的英文版本。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 了解数据\n",
    "\n",
    "当我们开始处理泰坦尼克号乘客数据时，会先导入我们需要的功能模块以及将数据加载到 `pandas` DataFrame。运行下面区域中的代码加载数据，并使用 `.head()` 函数显示前几项乘客数据。 \n",
    "\n",
    "> **提示**：你可以通过单击代码区域，然后使用键盘快捷键 **Shift+Enter** 或 **Shift+ Return** 来运行代码。或者在选择代码后使用**播放**（run cell）按钮执行代码。像这样的 MarkDown 文本可以通过双击编辑，并使用这些相同的快捷键保存。[Markdown](http://daringfireball.net/projects/markdown/syntax) 允许你编写易读的纯文本并且可以转换为 HTML。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# 检查你的Python版本\n",
    "from sys import version_info\n",
    "if version_info.major != 2 and version_info.minor != 7:\n",
    "    raise Exception('请使用Python 2.7来完成此项目')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                           Allen, Mr. William Henry    male  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Cabin Embarked  \n",
       "0      0         A/5 21171   7.2500   NaN        S  \n",
       "1      0          PC 17599  71.2833   C85        C  \n",
       "2      0  STON/O2. 3101282   7.9250   NaN        S  \n",
       "3      0            113803  53.1000  C123        S  \n",
       "4      0            373450   8.0500   NaN        S  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "# 数据可视化代码\n",
    "from titanic_visualizations import survival_stats\n",
    "from IPython.display import display\n",
    "%matplotlib inline\n",
    "\n",
    "# 加载数据集\n",
    "in_file = 'titanic_data.csv'\n",
    "full_data = pd.read_csv(in_file)\n",
    "\n",
    "# 显示数据列表中的前几项乘客数据\n",
    "display(full_data.head())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从泰坦尼克号的数据样本中，我们可以看到船上每位旅客的特征\n",
    "\n",
    "- **Survived**：是否存活（0代表否，1代表是）\n",
    "- **Pclass**：社会阶级（1代表上层阶级，2代表中层阶级，3代表底层阶级）\n",
    "- **Name**：船上乘客的名字\n",
    "- **Sex**：船上乘客的性别\n",
    "- **Age**:船上乘客的年龄（可能存在 `NaN`）\n",
    "- **SibSp**：乘客在船上的兄弟姐妹和配偶的数量\n",
    "- **Parch**：乘客在船上的父母以及小孩的数量\n",
    "- **Ticket**：乘客船票的编号\n",
    "- **Fare**：乘客为船票支付的费用\n",
    "- **Cabin**：乘客所在船舱的编号（可能存在 `NaN`）\n",
    "- **Embarked**：乘客上船的港口（C 代表从 Cherbourg 登船，Q 代表从 Queenstown 登船，S 代表从 Southampton 登船）\n",
    "\n",
    "因为我们感兴趣的是每个乘客或船员是否在事故中活了下来。可以将 **Survived** 这一特征从这个数据集移除，并且用一个单独的变量 `outcomes` 来存储。它也做为我们要预测的目标。\n",
    "\n",
    "运行该代码，从数据集中移除 **Survived** 这个特征，并将它存储在变量 `outcomes` 中。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Pclass                                               Name  \\\n",
       "0            1       3                            Braund, Mr. Owen Harris   \n",
       "1            2       1  Cumings, Mrs. John Bradley (Florence Briggs Th...   \n",
       "2            3       3                             Heikkinen, Miss. Laina   \n",
       "3            4       1       Futrelle, Mrs. Jacques Heath (Lily May Peel)   \n",
       "4            5       3                           Allen, Mr. William Henry   \n",
       "\n",
       "      Sex   Age  SibSp  Parch            Ticket     Fare Cabin Embarked  \n",
       "0    male  22.0      1      0         A/5 21171   7.2500   NaN        S  \n",
       "1  female  38.0      1      0          PC 17599  71.2833   C85        C  \n",
       "2  female  26.0      0      0  STON/O2. 3101282   7.9250   NaN        S  \n",
       "3  female  35.0      1      0            113803  53.1000  C123        S  \n",
       "4    male  35.0      0      0            373450   8.0500   NaN        S  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "0    0\n",
       "1    1\n",
       "2    1\n",
       "3    1\n",
       "4    0\n",
       "Name: Survived, dtype: int64"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 从数据集中移除 'Survived' 这个特征，并将它存储在一个新的变量中。\n",
    "outcomes = full_data['Survived']\n",
    "data = full_data.drop('Survived', axis = 1)\n",
    "\n",
    "# 显示已移除 'Survived' 特征的数据集\n",
    "display(data.head())\n",
    "# display(outcomes)\n",
    "display(outcomes.head())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这个例子展示了如何将泰坦尼克号的 **Survived** 数据从 DataFrame 移除。注意到 `data`（乘客数据）和 `outcomes` （是否存活）现在已经匹配好。这意味着对于任何乘客的 `data.loc[i]` 都有对应的存活的结果 `outcome[i]`。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 计算准确率\n",
    "为了验证我们预测的结果，我们需要一个标准来给我们的预测打分。因为我们最感兴趣的是我们预测的**准确率**，既正确预测乘客存活的比例。运行下面的代码来创建我们的 `accuracy_score` 函数以对前五名乘客的预测来做测试。\n",
    "\n",
    "**思考题**：在前五个乘客中，如果我们预测他们全部都存活，你觉得我们预测的准确率是多少？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predictions have an accuracy of 60.00%.\n"
     ]
    }
   ],
   "source": [
    "def accuracy_score(truth, pred):\n",
    "    \"\"\" 返回 pred 相对于 truth 的准确率 \"\"\"\n",
    "    \n",
    "    # 确保预测的数量与结果的数量一致\n",
    "    if len(truth) == len(pred): \n",
    "        \n",
    "        # 计算预测准确率（百分比）\n",
    "        return \"Predictions have an accuracy of {:.2f}%.\".format((truth == pred).mean()*100)\n",
    "    \n",
    "    else:\n",
    "        return \"Number of predictions does not match number of outcomes!\"\n",
    "    \n",
    "# 测试 'accuracy_score' 函数\n",
    "predictions = pd.Series(np.ones(5, dtype = int)) #五个预测全部为1，既存活\n",
    "print accuracy_score(outcomes[:5], predictions)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> **提示**：如果你保存 iPython Notebook，代码运行的输出也将被保存。但是，一旦你重新打开项目，你的工作区将会被重置。请确保每次都从上次离开的地方运行代码来重新生成变量和函数。\n",
    "\n",
    "### 最简单的预测\n",
    "\n",
    "如果我们要预测泰坦尼克号上的乘客是否存活，但是我们又对他们一无所知，那么最好的预测就是船上的人无一幸免。这是因为，我们可以假定当船沉没的时候大多数乘客都遇难了。下面的 `predictions_0` 函数就预测船上的乘客全部遇难。  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def predictions_0(data):\n",
    "    \"\"\" 不考虑任何特征，预测所有人都无法生还 \"\"\"\n",
    "\n",
    "    predictions = []\n",
    "    for _, passenger in data.iterrows():\n",
    "        \n",
    "        # 预测 'passenger' 的生还率\n",
    "        predictions.append(0)\n",
    "    \n",
    "    # 返回预测结果\n",
    "    return pd.Series(predictions)\n",
    "\n",
    "# 进行预测\n",
    "predictions = predictions_0(data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**问题1**：对比真实的泰坦尼克号的数据，如果我们做一个所有乘客都没有存活的预测，这个预测的准确率能达到多少？\n",
    "\n",
    "**回答**： *请用预测结果来替换掉这里的文字*\n",
    "\n",
    "**提示**：运行下面的代码来查看预测的准确率。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predictions have an accuracy of 61.62%.\n"
     ]
    }
   ],
   "source": [
    "print accuracy_score(outcomes, predictions)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 考虑一个特征进行预测\n",
    "\n",
    "我们可以使用 `survival_stats` 函数来看看 **Sex** 这一特征对乘客的存活率有多大影响。这个函数定义在名为 `titanic_visualizations.py` 的 Python 脚本文件中，我们的项目提供了这个文件。传递给函数的前两个参数分别是泰坦尼克号的乘客数据和乘客的 生还结果。第三个参数表明我们会依据哪个特征来绘制图形。\n",
    "\n",
    "运行下面的代码绘制出依据乘客性别计算存活率的柱形图。 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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B/bdd1+ee+457rvvPiZOnMgXv/hFhg4dytNPP71UWTfccAPbbbcdQ4YMYcSIEQBcffXVnHrqqUvWGTVqFJMmTVqy769//evsuuuufOtb3+LII49cst6kSZM45JBDgHd7H7785S9z2WXvXtn63HPP5eKLLwbgoosuYvjw4eywww6cc845nXlY22TAS5K6zfvf/37eeecdZs+evdT88847jz333JNHH32U0aNH89xzz7W6/aJFi9htt92YOnUqI0aM4MorrwTg1FNP5dhjj+Wxxx7j6KOP5rTTTuPDH/4wo0eP5qKLLmLKlClsueWWS5V1/vnnc8cddzB16lQmTpzYYd0XLVrEdtttx4MPPshZZ53FAw88wKJFiwC47rrrGDNmzFLrjx07luuuu27J9PXXX88RRxzBnXfeyfTp03nooYeYMmUKkydP5p577un4wVtOBrwkqVu11jq/5557+OQnPwnAwQcfzLrrrtvqtquvvvqSVv/OO+/MX/7yFwDuv/9+PvGJTwBwzDHHcO+993ZYjz322IPjjz+eK6+8krfffrvD9Zuamvj4xz8OQJ8+fTjwwAO5+eabWbx4MbfeeiuHHnroUuvvuOOOzJ49m+eff56pU6ey7rrrstlmm3HnnXdy5513suOOO7LTTjvx5JNPMn369A73v7w8Bi9J6jbPPPMMTU1NbLjhhkybNm2pZfWMHO/bt++S9Zqamli8eHGr69VT1uWXX86DDz7IrbfeytChQ5kyZQp9+vRZMggQWOqnav369VvquPuYMWP40Y9+xHrrrcfw4cPp37//Mvs4/PDDmTBhAn//+98ZO3YsUHzBOeusszjppJM6rGNn2IKvFeFfd/1JWuXMmTOHk08+mVNPPXWZAB4xYgTXXnstALfffjsvvfTScpX94Q9/mPHjxwNw7bXXsueeewLQv39/Fi5c2Oo2Tz/9NLvuuivnn38+G2ywATNmzGDw4MFMmTKFd955hxkzZvDQQw+1uc+RI0fyyCOPcOWVVy7TPd9s7NixjB8/ngkTJnD44YcDcMABB/DTn/6UV155BYC//e1vyxyy6Aq24CVJDfPaa68xdOhQ3nrrLfr06cMxxxzDGWecscx655xzDkcddRQ77bQTe++9N5ttttly7efSSy/l05/+NBdddBEDBw7kP//zP4EiYD/zmc9w6aWXMmHChKWOw3/xi19k+vTpZCb77rsvQ4YMAWCLLbZg++23Z7vttmOnnXZqc59NTU2MGjWKq6++mnHjxrW6zrbbbsvChQvZZJNN2GijjQDYf//9mTZtGrvvvjtQDN675ppr2HDDDZfrPnck2hqpuDIYNmxYdun14G1Zdp+V+HUnrSymTZvG1ltv3dPV0Apq7fmLiMmZWddvC+2ilySpggx4SZIqyICXJKmCDHhJkirIgJckqYIMeEmSKsiAlyQ11De/+U223XZbdthhB4YOHcqDDz7Y6TInTpzIhRde2AW1K36HXkWe6EaSVhFxXtee6yPP6fh8Fvfffz+33HILjzzyCGussQZz587lzTffrKv8xYsX06dP6zE1evRoRo8evVz1XdXYgpckNcysWbPYYIMNWGONNQDYYIMN2HjjjZdcUhXg4YcfZuTIkUBxSdUTTzyR/fffn2OPPZZdd92Vxx9/fEl5I0eOZPLkyUsu67pgwQIGDx685Pzxr776KptuuilvvfUWTz/9NAceeCA777wze+21F08++SQAzz77LLvvvjvDhw/n7LPP7sZHo3sZ8JKkhtl///2ZMWMGH/zgBznllFO4++67O9xm8uTJ3HTTTfz85z9n7NixXH/99UDxZeH5559n5513XrLuOuusw5AhQ5aUe/PNN3PAAQfQt29fTjzxRH7wgx8wefJkvve973HKKacAcPrpp/PZz36WP/zhD/zDP/xDA+5172DAS5IaZu2112by5MlcccUVDBw4kDFjxnD11Ve3u83o0aNZc801ATjyyCO54YYbgHevp97SmDFjllx3ffz48YwZM4ZXXnmF++67jyOOOIKhQ4dy0kknMWvWLAB+//vfc9RRRwHFpWWrymPwkqSGampqYuTIkYwcOZLtt9+ecePGLXVZ1tpLsgKstdZaS25vsskmrL/++jz22GNcd911/OQnP1mm/NGjR3PWWWfx4osvMnnyZPbZZx8WLVrEgAEDmDJlSqt1qudysis7W/CSpIb585//zPTp05dMT5kyhc0335zBgwczefJkAH75y1+2W8bYsWP57ne/y4IFC9h+++2XWb722muzyy67cPrppzNq1Ciampp473vfyxZbbLGk9Z+ZTJ06FYA99thjqUvLVpUBL0lqmFdeeYXjjjuObbbZhh122IEnnniCc889l3POOYfTTz+dvfbai6ampnbLOPzwwxk/fjxH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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x87a60f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "survival_stats(data, outcomes, 'Sex')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "观察泰坦尼克号上乘客存活的数据统计，我们可以发现大部分男性乘客在船沉没的时候都遇难了。相反的，大部分女性乘客都在事故中**生还**。让我们以此改进先前的预测：如果乘客是男性，那么我们就预测他们遇难；如果乘客是女性，那么我们预测他们在事故中活了下来。\n",
    "\n",
    "将下面的代码补充完整，让函数可以进行正确预测。  \n",
    "\n",
    "**提示**：您可以用访问 dictionary（字典）的方法来访问船上乘客的每个特征对应的值。例如， `passenger['Sex']` 返回乘客的性别。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predictions have an accuracy of 78.68%.\n"
     ]
    }
   ],
   "source": [
    "def predictions_1(data):\n",
    "    \"\"\" 只考虑一个特征，如果是女性则生还 \"\"\"\n",
    "    \n",
    "    predictions = []\n",
    "    for _, passenger in data.iterrows():\n",
    "        \n",
    "        # TODO 1\n",
    "        # 移除下方的 'pass' 声明\n",
    "        # 输入你自己的预测条件\n",
    "        # 预测 'passenger' 的生还率\n",
    "        if passenger['Sex'] == 'male':\n",
    "            predictions.append(0)\n",
    "        else :\n",
    "            predictions.append(1)\n",
    "    \n",
    "    # 返回预测结果\n",
    "    return pd.Series(predictions)\n",
    "\n",
    "# 进行预测\n",
    "predictions = predictions_1(data)\n",
    "print accuracy_score(outcomes, predictions)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**问题2**：当我们预测船上女性乘客全部存活，而剩下的人全部遇难，那么我们预测的准确率会达到多少？\n",
    "\n",
    "**回答**: *用预测结果来替换掉这里的文字*\n",
    "\n",
    "**提示**：你需要在下面添加一个代码区域，实现代码并运行来计算准确率。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 考虑两个特征进行预测\n",
    "\n",
    "仅仅使用乘客性别（Sex）这一特征，我们预测的准确性就有了明显的提高。现在再看一下使用额外的特征能否更进一步提升我们的预测准确度。例如，综合考虑所有在泰坦尼克号上的男性乘客：我们是否找到这些乘客中的一个子集，他们的存活概率较高。让我们再次使用 `survival_stats` 函数来看看每位男性乘客的年龄（Age）。这一次，我们将使用第四个参数来限定柱形图中只有男性乘客。\n",
    "\n",
    "运行下面这段代码，把男性基于年龄的生存结果绘制出来。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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5/L9738fgPPPP5/dd9+dnXfemXPOOaczb2uHTPaSpC619dZb8/bbbzN37txlxp933nnsu+++3HfffYwaNYqnnnqqzeUXLVrEXnvtxYwZM9h///255JJLADjttNM48cQTuf/++zn++OM5/fTTef/738+oUaM4//zzmT59Ou95z3uWWdfXv/51br75ZmbMmMHkyZM7jH3RokXsuOOOTJkyhTPPPJN77rmHRYsWAXDFFVcwevToZeYfM2YMV1xxxZLhK6+8kmOOOYZbbrmFWbNmce+99zJ9+nSmTZvGnXfe2fGbt4pM9pKkLtdWqf3OO+/kYx/7GACHH344G2ywQZvLrrnmmktqA3bbbTeefPJJAO6++24++tGPAnDCCSfwhz/8ocM49tlnHz7+8Y9zySWX8NZbb3U4f58+ffjIRz4CQN++fTn00EO57rrrWLx4MTfccANHHnnkMvPvsssuzJ07l2eeeYYZM2awwQYbsOWWW3LLLbdwyy23sMsuu7Drrrvy8MMPM2vWrA63v6q8Zi9J6lKPP/44ffr0YZNNNmHmzJnLTKunBXq/fv2WzNenTx8WL17c5nz1rOuiiy5iypQp3HDDDQwbNozp06fTt2/fJQ0IgWVuf+vfv/8y1+lHjx7NT37yEzbccEN233131l9//eW2cfTRR3P11Vfz3HPPMWbMGKD4sXPmmWcyttFtKFbAZK/u00UHebepo+GStLqZN28en/rUpzjttNOWS8b7778/EydO5KyzzuKmm27ipZdeWql1v//972fSpEmccMIJTJw4kX333ReA9ddfn1deeaXNZR577DH23HNP9txzT6677jpmz57N4MGDufDCC3n77bd5+umnuffee1e4zREjRnDKKadwySWXLFeF32LMmDF88pOf5IUXXuCOO+4A4JBDDuHss8/m+OOPZ7311uPpp5+mX79+bLLJJiu1z/Uy2UuSmur1119n2LBhvPnmm/Tt25cTTjiBz3/+88vNd84553Dcccex6667csABB7Dllluu1HYuuOACPvGJT3D++eczcOBAfvGLXwBLk+0FF1zA1Vdfvcx1+y9+8YvMmjWLzOSggw5i6NChAAwZMoSddtqJHXfckV133XWF2+zTpw8jR47ksssuY8KECW3Os8MOO/DKK6+w+eabs+mmmwJw8MEHM3PmTPbee2+gaPj3y1/+smnJPlbU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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x91afd68>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "survival_stats(data, outcomes, 'Age', [\"Sex == 'male'\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "仔细观察泰坦尼克号存活的数据统计，在船沉没的时候，大部分小于10岁的男孩都活着，而大多数10岁以上的男性都随着船的沉没而**遇难**。让我们继续在先前预测的基础上构建：如果乘客是女性，那么我们就预测她们全部存活；如果乘客是男性并且小于10岁，我们也会预测他们全部存活；所有其它我们就预测他们都没有幸存。  \n",
    "\n",
    "将下面缺失的代码补充完整，让我们的函数可以实现预测。  \n",
    "**提示**: 您可以用之前 `predictions_1` 的代码作为开始来修改代码，实现新的预测函数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predictions have an accuracy of 21.32%.\n"
     ]
    }
   ],
   "source": [
    "def predictions_2(data):\n",
    "    \"\"\" 考虑两个特征: \n",
    "            - 如果是女性则生还\n",
    "            - 如果是男性并且小于10岁则生还 \"\"\"\n",
    "    \n",
    "    predictions = []\n",
    "    for _, passenger in data.iterrows():\n",
    "        \n",
    "        # TODO 2\n",
    "        # 移除下方的 'pass' 声明\n",
    "        # 输入你自己的预测条件\n",
    "        if passenger['Sex'] == 'female' or passenger['Sex'] < 10:\n",
    "            predictions.append(0)\n",
    "        else :\n",
    "            predictions.append(1)\n",
    "    \n",
    "    # 返回预测结果\n",
    "    return pd.Series(predictions)\n",
    "\n",
    "# 进行预测\n",
    "predictions = predictions_2(data)\n",
    "print accuracy_score(outcomes, predictions)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**问题3**：当预测所有女性以及小于10岁的男性都存活的时候，预测的准确率会达到多少？\n",
    "\n",
    "**回答**: *用预测结果来替换掉这里的文字*\n",
    "\n",
    "**提示**：你需要在下面添加一个代码区域，实现代码并运行来计算准确率。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 你自己的预测模型\n",
    "\n",
    "添加年龄（Age）特征与性别（Sex）的结合比单独使用性别（Sex）也提高了不少准确度。现在该你来做预测了：找到一系列的特征和条件来对数据进行划分，使得预测结果提高到80%以上。这可能需要多个特性和多个层次的条件语句才会成功。你可以在不同的条件下多次使用相同的特征。**Pclass**，**Sex**，**Age**，**SibSp** 和 **Parch** 是建议尝试使用的特征。   \n",
    "\n",
    "使用 `survival_stats` 函数来观测泰坦尼克号上乘客存活的数据统计。  \n",
    "**提示:** 要使用多个过滤条件，把每一个条件放在一个列表里作为最后一个参数传递进去。例如: `[\"Sex == 'male'\", \"Age < 18\"]`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "survival_stats(data, outcomes, 'Age', [\"Sex == 'male'\", \"Age < 18\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "当查看和研究了图形化的泰坦尼克号上乘客的数据统计后，请补全下面这段代码中缺失的部分，使得函数可以返回你的预测。   \n",
    "在到达最终的预测模型前请确保记录你尝试过的各种特征和条件。   \n",
    "**提示:** 您可以用之前 `predictions_2` 的代码作为开始来修改代码，实现新的预测函数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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8EIuueQSAC6++GL23HNPdtttNy644IKufKyrxSQvSep222+/PW+//Tbz589fafhFF13EAQccwMMPP8yYMWN47rnnWp1/yZIl7LPPPsyYMYODDjqIK6+8EoCzzjqLU045hUceeYSTTjqJs88+m/32248xY8Zw8cUXM336dHbYYYeVyvr617/OnXfeyYwZM5g8eXKHsS9ZsoRddtmFKVOmcO655/Lggw+yZMkSAK699lrGjh270vTjxo3j2muvXfH+uuuu4/jjj+euu+5i1qxZPPTQQ0yfPp1p06Zx3333dfzhdSOTvCSpIVqrpd933318/OMfB+DII49ko402anXetddee0Xtf4899uDZZ58F4IEHHuBjH/sYACeffDL3339/h3Hsv//+fOITn+DKK69k+fLlHU7f1NTERz/6UQAGDBjA4Ycfzi233MKyZcu47bbbOOaYY1aafvfdd2f+/Pm88MILzJgxg4022ohtt92Wu+66i7vuuovdd9+dESNG8MQTTzBr1qwOl9+dPCcvSep2Tz/9NE1NTWy++ebMnDlzpXH19CgfOHDgiumamppYtmxZq9PVU9bll1/OlClTuO222xg+fDjTp09nwIABKzoGAiv9jW3QoEErnYcfO3YsP/7xj9l4443Zc889WX/99VdZxnHHHccNN9zAiy++yLhx44DiR865557L6d3dR6IT+kWS/8uiv3D6Lb33IUlrqiuO7rjDldTSSy+9xBlnnMFZZ521ShI+6KCDmDhxIueddx533HEHr7zySqfK3m+//Zg0aRInn3wyEydO5IADDgBg/fXXZ/Hixa3O89RTT7H33nuz9957c8sttzB79myGDBnCZZddxttvv83zzz/PQw891OYyR40axac//WmuvPLKVZrqm40bN47PfOYzLFiwgHvvvReAww47jPPPP5+TTjqJwYMH8/zzzzNw4EA233zzTq1zV/SLJC9J6tvefPNNhg8fzltvvcWAAQM4+eST+cIXvrDKdBdccAEnnngiI0aM4OCDD2bbbbft1HIuvfRSPvWpT3HxxRez2Wab8e///u/AO0n20ksv5YYbbljpvPyXvvQlZs2aRWZy6KGHMmzYMACGDh3Krrvuyi677MKIESPaXGZTUxNHHXUUV111FVdffXWr0+y8884sXryYrbbaii222AKA0aNHM3PmTPbdd1+g6ND385//vEeTfLTVs7Ev2ex9m+VHvv+R3g5DWuNYk+8fZs6cyY477tjbYWg1tbb9ImJaZnb5f4d2vJMkqaJM8pIkVZRJXpKkijLJS5JUUSZ5SZIqyiQvSVJFmeQlSd3im9/8JjvvvDO77bYbw4cPZ8qUKV0uc/LkyXz729/uhuiK/6mvabwYjiRVTHdfIbSe6yU88MAD3Hrrrfzxj39knXXWYcGCBfztb3+rq/xly5YxYEDr6WjMmDGMGTOmU/HqHdbkJUldNnfuXDbddFPWWWcdADbddFO23HLLFbdjBZg6dSqjRo0CituxnnbaaYwePZpTTjmFvffem8cee2xFeaNGjWLatGkrbgm7aNEihgwZsuJ682+88QbbbLMNb731Fk899RSHH344e+yxBwceeCBPPPEEAM888wz77rsve+65J+eff34Pfhp9h0lektRlo0ePZvbs2bz//e/nzDPPXHH99vZMmzaNm2++mV/84heMGzeO6667Dih+MLzwwgvsscceK6bdYIMNGDZs2Ipyb7nlFg477DAGDhzIaaedxg9/+EOmTZvG9773Pc4880wAxo8fz2c/+1n+8Ic/8N73vrcBa933meQlSV02ePBgpk2bxoQJE9hss80YO3YsV111VbvzjBkzhnXXXReAE044geuvvx54537sLY0dO3bFfdsnTZrE2LFjef311/n973/P8ccfz/Dhwzn99NOZO3cuAL/73e848cQTgeK2tGsiz8lLkrpFU1MTo0aNYtSoUey6665cffXVK93StfZ2rgDrrbfeitdbbbUVm2yyCY888gjXXnstV1yxaj+AMWPGcO655/Lyyy8zbdo0DjnkEJYsWcKGG27I9OnTW42pnlvRVpk1eUlSl/35z39m1qxZK95Pnz6d7bbbjiFDhjBt2jQAbrzxxnbLGDduHN/97ndZtGgRu+666yrjBw8ezF577cX48eM56qijaGpq4t3vfjdDhw5d0QqQmcyYMQOA/fffn0mTJgEwceLEblnP/qZhST4iBkXEQxExIyIei4iLyuFDI2JKRMyKiGsjYu1GxSBJ6hmvv/46p556KjvttBO77bYbjz/+OBdeeCEXXHAB48eP58ADD6SpqandMo477jgmTZrECSec0OY0Y8eO5ec///lK93WfOHEiP/3pTxk2bBg777wzN998MwA/+MEP+PGPf8yee+7JokWLumdF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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x97dc898>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def predictions_3(data):\n",
    "    \"\"\" 考虑多个特征，准确率至少达到80% \"\"\"\n",
    "    \n",
    "    predictions = []\n",
    "    for _, passenger in data.iterrows():\n",
    "        \n",
    "        # TODO 3\n",
    "        # 移除下方的 'pass' 声明\n",
    "        # 输入你自己的预测条件\n",
    "        if passenger['Sex'] == 'female' or passenger['Sex'] < 10:\n",
    "            predictions.append(0)\n",
    "        else :\n",
    "            predictions.append(1)\n",
    "    \n",
    "    # 返回预测结果\n",
    "    return pd.Series(predictions, name='Survived')\n",
    "\n",
    "# 进行预测\n",
    "predictions = predictions_3(data)\n",
    "survival_stats(data, predictions, 'Age', [\"Sex == 'male'\", \"Age < 18\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**问题4**：请描述你实现80%准确度的预测模型所经历的步骤。您观察过哪些特征？某些特性是否比其他特征更有帮助？你用了什么条件来预测生还结果？你最终的预测的准确率是多少？\n",
    "\n",
    "**回答**：*用上面问题的答案来替换掉这里的文字*\n",
    "\n",
    "**提示**：你需要在下面添加一个代码区域，实现代码并运行来计算准确率。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 结论\n",
    "\n",
    "经过了数次对数据的探索和分类，你创建了一个预测泰坦尼克号乘客存活率的有用的算法。在这个项目中你手动地实现了一个简单的机器学习模型——决策树（*decision tree*）。决策树每次按照一个特征把数据分割成越来越小的群组（被称为 *nodes*）。每次数据的一个子集被分出来，如果分割后新子集之间的相似度比分割前更高（包含近似的标签），我们的预测也就更加准确。电脑来帮助我们做这件事会比手动做更彻底，更精确。[这个链接](http://www.r2d3.us/visual-intro-to-machine-learning-part-1/)提供了另一个使用决策树做机器学习入门的例子。  \n",
    "\n",
    "决策树是许多**监督学习**算法中的一种。在监督学习中，我们关心的是使用数据的特征并根据数据的结果标签进行预测或建模。也就是说，每一组数据都有一个真正的结果值，不论是像泰坦尼克号生存数据集一样的标签，或者是连续的房价预测。\n",
    "\n",
    "**问题5**：想象一个真实世界中应用监督学习的场景，你期望预测的结果是什么？举出两个在这个场景中能够帮助你进行预测的数据集中的特征。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**回答**: *用你的答案替换掉这里的文字*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> **注意**: 当你写完了所有**5个问题，3个TODO**。你就可以把你的 iPython Notebook 导出成 HTML 文件。你可以在菜单栏，这样导出**File -> Download as -> HTML (.html)** 把这个 HTML 和这个 iPython notebook 一起做为你的作业提交。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "翻译：毛礼建 ｜ 校译：黄强 ｜ 审译：曹晨巍"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
